The present disclosure relates to the data processing field. More specifically, this disclosure relates to the updating of software products on virtual machines.
Virtual (computing) machines are commonly used to emulate physical (computing) machines in virtualized computing environments. Particularly, the virtual machines are a key component of cloud computing environments, wherein computing resources offered as services are made available on-demand.
Each virtual machine may be deployed on a host computing machine by means of a corresponding software image. In general, a software image is a structure that encapsulates files residing on a (physical or virtual) computing machine (for example, storing its operating system and software products); in this way, the virtual machine may be deployed by simply creating and booting it from the software image. Moreover, the virtual machines may be combined into virtual appliances, each one comprising the definition of one or more virtual machines with its software images; the virtual appliance is encapsulated in a self-contained package, which may be deployed as a unit. Particularly, as described in US-A-2013/0227089 (the entire disclosure of which is herein incorporated by reference), virtual machine disk images for different cloud configurations may be built from a single generic virtual machine disk image; moreover, as described in EP-A-2212781 (the entire disclosure of which is herein incorporated by reference), a virtual machine may be created by utilizing a virtual OS disk and virtual application disks (with files in the virtual application disk that are linked to a specific file system location in the virtual OS disk).
The software products of the virtual machine (as well as its operating system) may be subject to maintenance operations during their life cycle; particularly, updates may be applied to the software products from time to time, for example, to correct bugs or to improve their operation. For this purpose, once the virtual machine has been deployed from the corresponding software image, its maintenance is generally managed with a traditional approach. For example, each software product may comprise an embedded updating tool, which is invoked periodically when the software product is launched; the updating tool downloads any update that is available online and then applies it to the software product automatically.
Moreover, different techniques specifically tailored to the virtual appliances have been proposed. For example, US-A-2013/0091498 (the entire disclosure of which is herein incorporated by reference) proposes driving the maintenance of a virtual appliance by a maintenance descriptor that lists software components to be updated to new levels; the virtual appliance is cloned, its software components (which should actually be updated according to a comparison between their discovered current levels and the new levels) are brought to the new levels, and the (updated) cloned virtual appliance replaces the current one. Moreover, US-A-2009/0217244 (the entire disclosure of which is herein incorporated by reference) proposes updating a virtual appliance by creating an updated level thereof including state information of the prior virtual appliance being updated. US-A-2012/0260249 (the entire disclosure of which is herein incorporated by reference) instead proposes a virtual appliance update mechanism that detects when an update to a corresponding workload (representing the virtual appliance after it has been deployed and it is executed) is made, and it makes automatic corresponding changes to the virtual appliance to reflect the update to the workload.
Alternatively, the management of the software products too may be based on the use of software images. For example, US-A-2011/0078680 (the entire disclosure of which is herein incorporated by reference) proposes reconfiguring a virtual server image by using information in a virtual server image patch.
Moreover, it is also possible to leverage an organization of each virtual machine into multiple virtual disks (each one emulating a physical disk). For example, the operating system, the software products and their data may be separated into different virtual disks. In this way, it is possible to provide a new virtual disk with an updated software product, stop the virtual machine, replace the corresponding virtual disk, and then re-start the virtual machine. Particularly, US-A-2012/0054736 (the entire disclosure of which is herein incorporated by reference) proposes providing a self-activating virtual disk, which comprises a unique identifier of the virtual disk, an upgrade of a software application and activation/de-activation scripts. When a virtual disk activation manager detects a new virtual disk that is attached to a virtual machine (by collecting a local list of all the virtual disks thereof), the de-activation script of the new virtual disk is copied onto a base operating system virtual disk; a software package of the new virtual disk is then installed by the corresponding activation scripts, and an entry for the new virtual disk is added to the local list. Conversely, when the virtual disk activation manager detects that a virtual disk has been removed, the corresponding de-activation script is executed; the de-activation script is then removed from the base operating system virtual disk and the corresponding entry is deleted from the local list.
However, the specific operations for updating any software product still require a substantial manual intervention (for example, to remove a current level of the software product, to replace it with a new level thereof and to activate the new level of the software product), which may be time consuming and prone to errors.